<?php
/*
* Gerador de CrudPhp
* author: fabricio s costa
* version: 1.0
* site: http://fabriciojf.com
*/
require_once('com/fabriciojf/persistence/PDOConnectionFactory.class.php');
require_once('com/fabriciojf/model/Categoria.class.php');


class CategoriaDAO extends PDOConnectionFactory {

    // irÃ¡ receber uma conexÃ£o
    public $conex = null;

    // constructor
    public function CategoriaDAO(){
        $this->conex = PDOConnectionFactory::getConnection();
    }


    // realiza uma inserÃ§Ã£o
    public function save($categoria){

        try{
            // executa a query
            $stmt = $this->conex->prepare("INSERT INTO categoria (categoria) VALUES (?)");

            // valores encapsulados nas variÃ¡veis da classe Agenda.
            // sequencia de Ã­ndices que representa cada valor de minha query
            $stmt->bindValue(1, $categoria->getCategoria());

            // executo a query preparada
            $stmt->execute();

            // fecho a conexÃ£o
            $this->conex = null;

            return true;

            // caso ocorra um erro, retorna o erro;
        }catch ( PDOException $ex ){
            echo "Erro: ".$ex->getMessage();
            return false;
        }
    }


    // realiza uma inserÃ§Ã£o
    public function update($categoria){

        try{
            // executa a query
            $stmt = $this->conex->prepare("UPDATE categoria SET categoria = ? WHERE id=".$categoria->getid());
            // valores encapsulados nas variÃ¡veis da classe Agenda.
            // sequencia de Ã­ndices que representa cada valor de minha query
            $stmt->bindValue(1, $categoria->getId());
            $stmt->bindValue(2, $categoria->getCategoria());

            // executo a query preparada
            $stmt->execute();

            // fecho a conexÃ£o
            $this->conex = null;

            // caso ocorra um erro, retorna o erro;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
    }


    // remove um registro
    public function remove( $id ){

        try{
            // executo a query
            $num = $this->conex->exec("DELETE FROM categoria WHERE id=$id");

            // caso seja execuado ele retorna o nÃºmero de rows que foram afetadas.
            if( $num >= 1 ){ return $num; } else { return 0; }
            // caso ocorra um erro, retorna o erro;

        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }

    }


    // realiza uma listagem
    public function listAll(){

        try{
            // executa a query
            $stmt = $this->conex->query("SELECT * FROM categoria");

            // desconecta
            $this->conex = null;

            // retorna o resultset
            return $stmt;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
    }


    public function findForId($id){

        try{
            $categoria = new Categoria();

            // executo a query
            $stmt = $this->conex->query("SELECT * FROM categoria WHERE id=$id");

            // desconecta
            $this->conex = null;

            $rows = $stmt->fetchAll();
            foreach ($rows as $rs) {
                $categoria->setId($rs['id']);
                $categoria->setCategoria($rs['categoria']);
            }

            return $categoria;
        }catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); exit;}
    }


}
